package com.central.apps.handler.cronTask;



import com.central.apps.service.OverhaulMgService;
import com.central.apps.service.PmService;
import lombok.Data;
import lombok.extern.apachecommons.CommonsLog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 定时任务
 */
@Component
@Configuration
@EnableScheduling
@CommonsLog
public class TimeTask {

    @Autowired
    private OverhaulMgService OverhaulMgService;
    @Autowired
    private PmService PmService;

    //巡点检工单
    //格式: 秒 分 时 日 月 星期 年
    @Scheduled(cron="0  0  1  *  *  ?")
//    @Scheduled(cron="0 0 18 * * ?")
    public void inspectionTimeTask() throws Exception {
        log.info("我来啦！！！！！！！！！！！");
        OverhaulMgService.queryInspectionPlan("巡检");



    }

    //检维修工单
    //格式: 秒 分 时 日 月 星期 年
    @Scheduled(cron="0  0  1  *  *  ?")
//    @Scheduled(cron="0 0 18 * * ?")
    public void JwxTimeTask() throws Exception {
        log.info("我来啦！！！！！！！！！！！");
        PmService.queryInspectionPlan("PM");



    }

    //pm工单
    //格式: 秒 分 时 日 月 星期 年
    @Scheduled(cron="0  0  1  *  *  ?")
//    @Scheduled(cron="0 0 18 * * ?")
    public void pmTimeTask() throws Exception {
        log.info("我来啦！！！！！！！！！！！");
        OverhaulMgService.queryJwXPlan("检修");



    }
    //维修工每隔10分钟就执行一次
//    @Scheduled(cron="0 20 11 * * ?")
//    public void djwxTimeTask() throws Exception {
//        Thread.sleep(10*60*1000);
//        handlerins.timeTaskToWxgdj();
//
//    }

    //点检员每隔10分钟就执行一次
//    @Scheduled(cron="0 20 11 * * ?")
//    public void djdTimeTask() throws Exception {
//        Thread.sleep(20*60*1000);
//        handlerins.timeTaskToDjy();
//
//    }




}
        /*0 0 10,14,16 * * ? 每天上午10点，下午2点，4点
        0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
        0 0 12 ? * WED 表示每个星期三中午12点
        “0 0 12 * * ?” 每天中午12点触发
        “0 15 10 ? * *” 每天上午10:15触发
        “0 15 10 * * ?” 每天上午10:15触发
        “0 15 10 * * ? *” 每天上午10:15触发
        “0 15 10 * * ? 2005” 2005年的每天上午10:15触发
        “0 * 14 * * ?” 在每天下午2点到下午2:59期间的每1分钟触发
        “0 0/5 14 * * ?” 在每天下午2点到下午2:55期间的每5分钟触发
        “0 0/5 14,18 * * ?” 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
        “0 0-5 14 * * ?” 在每天下午2点到下午2:05期间的每1分钟触发
        “0 10,44 14 ? 3 WED” 每年三月的星期三的下午2:10和2:44触发
        “0 15 10 ? * MON-FRI” 周一至周五的上午10:15触发
        “0 15 10 15 * ?” 每月15日上午10:15触发
        “0 15 10 L * ?” 每月最后一日的上午10:15触发
        “0 15 10 ? * 6L” 每月的最后一个星期五上午10:15触发
        “0 15 10 ? * 6L 2002-2005” 2002年至2005年的每月的最后一个星期五上午10:15触发
        “0 15 10 ? * 6#3” 每月的第三个星期五上午10:15触发*/

      /*  * 表示所有值. 例如:在分的字段上设置 “*”,表示每一分钟都会触发

                ? 表示不指定值。使用的场景为不需要关心当前设置这个字段的值。

                例如:要在每月的10号触发一个操作，但不关心是周几，所以需要周位置的那个字段设置为"?" 具体设置为 0 0 0 10 * ?

                - 表示区间。例如 在小时上设置 “10-12”,表示 10,11,12点都会触发。

                , 表示指定多个值，例如在周字段上设置 “MON,WED,FRI” 表示周一，周三和周五触发

                / 用于递增触发。如在秒上面设置"5/15" 表示从5秒开始，每增15秒触发(5,20,35,50)。 在月字段上设置’1/3’所示每月1号开始，每隔三天触发一次。

                L 表示最后的意思。在日字段设置上，表示当月的最后一天(依据当前月份，如果是二月还会依据是否是润年[leap]), 在周字段上表示星期六，相当于"7"或"SAT"。如果在"L"前加上数字，则表示该数据的最后一个。例如在周字段上设置"6L"这样的格式,则表示“本月最后一个星期五"

                W 表示离指定日期的最近那个工作日(周一至周五). 例如在日字段上设置"15W"，表示离每月15号最近的那个工作日触发。如果15号正好是周六，则找最近的周五(14号)触发, 如果15号是周未，则找最近的下周一(16号)触发.如果15号正好在工作日(周一至周五)，则就在该天触发。如果指定格式为 “1W”,它则表示每月1号往后最近的工作日触发。如果1号正是周六，则将在3号下周一触发。(注，“W"前只能设置具体的数字,不允许区间”-").

                #序号(表示每月的第几个周几)，例如在周字段上设置"6#3"表示在每月的第三个周六.注意如果指定"#5",正好第五周没有周六，则不会触发该配置(用在母亲节和父亲节再合适不过了) ；

                小提示：
                'L’和 'W’可以组合使用。如果在日字段上设置"LW",则表示在本月的最后一个工作日触发；
                周字段的设置，若使用英文字母是不区分大小写的，即MON 与mon相同；*/

